import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
from sklearn.metrics import accuracy_score
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import Lasso, LogisticRegression
from sklearn.metrics import log_loss
from sklearn.metrics import roc_auc_score
from sklearn.linear_model import LassoCV



#Import data 
df = pd.read_csv("......csv", delimiter=',')

dlr = pd.read_csv(".....csv", delimiter=',')

X_train, X_test, y_train, y_test = train_test_split(df, dlr, test_size=0.30, random_state = 42)

scaler = StandardScaler().fit(X_train) 
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

#regression
model = Lasso(alpha=1)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(mse)

#classification
LR=LogisticRegression(C=0.5, penalty='l1', solver='liblinear', random_state=10)
LR.fit(X_train, y_train.values.ravel())
sel_ = SelectFromModel(LR)
sel_.fit(X_train,y_train.values.ravel())

#prediction 
y_pred = LR.predict(X_test)
y_pred_tr = LR.predict(X_train)

#calculating loss value
loss_test = log_loss(y_test, y_pred, eps=1e-5, normalize=True, sample_weight=None, labels=None)
loss_train = log_loss(y_train, y_pred_tr, eps=1e-5, normalize=True, sample_weight=None, labels=None)
print(loss_train,loss_test)

#Accuracy 
print("Accuracy_train:",metrics.accuracy_score(y_train, y_pred_tr))
print("Accuracy_test:",metrics.accuracy_score(y_test, y_pred))

#classification
sel_.get_support()
X_train = pd.DataFrame(X_train)
selected_features = X_train.columns[(sel_.estimator_.coef_ > 0).ravel().tolist()]
selected_features

lst = np.array(sel_.estimator_.coef_>0)
index_list = np.where(lst > 0)
print(index_list)










